#ifndef __MY_DATA__
#define __MY_DATA__
#include <unordered_map>
#include <sstream>
#include "fileUtil.hpp"
#include "databasemanager.h"
#include "backupdb.h"
extern DatabaseManager dbManager;
namespace cloudBackup
{
class DataManager
{
private:
    // 数据库 存储 诸多已备份文件的属性信息
    std::unordered_map<std::string, std::string> _table; // 文件路径 : 文件etag
    int _usrID;
public:
    DataManager(int usrID)
        :_usrID(usrID)
    {
        dbManager.readFileAInfo(_usrID, _table);
    }

    // 新增文件 插入数据库记录
    bool Insert_Table(const std::string& key, const std::string& val)
    {
        _table[key] = val;
        dbManager.insertRecord(_usrID, key, val);
        return true;
    }

    // 文件被修改 更新数据库记录file_etag file_status
    bool Modify_Table(const std::string& key, const std::string& val, int usrID)
    {
        _table[key] = val;
        dbManager.modifyRecord(key, val, usrID);
        return true;
    }

    // 文件被删除 根据file_etag删除数据库记录
    bool Remove_Table(int usrID, const std::string& key)
    {
        _table.erase(key);
        dbManager.removeRecord(usrID, key);
        return true;
    }
    bool GetEtagByPath(const std::string& filePath, std::string* fileEtag)
    {
        auto it = _table.find(filePath);
        if (it == _table.end())
            return false;

        *fileEtag = it->second;
        return true;
    }
};
}

#endif
